#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
#define NUM_THREAD 100
void *thread_inc(void *arg);
void *thread_des(void *arg);
long long num=0;//long long类型是64位整数型
//此时存在问题，临界区问题
//最后的结果得不到0
int main(int argc,char *argv[])
{
	pthread_t thread_id[NUM_THREAD];
	int i;
	
	printf("sizeof long long:%d\n",(int)sizeof(long long));
	for(i=0;i<NUM_THREAD;i++)
	{
		if(i%2)
			pthread_create(&(thread_id[i]),NULL,thread_inc,NULL);
		else
			pthread_create(&(thread_id[i]),NULL,thread_des,NULL);
	}
	for(i=0;i<NUM_THREAD;i++)
		pthread_join(thread_id[i],NULL);
	printf("result:%lld\n",num);
	return 0;
}
void *thread_inc(void *arg)
{
	int i;
	for(i=0;i<50000000;i++)
		num+=1;
	return NULL;
}
void *thread_des(void *arg)
{
	int i;
	for(i=0;i<50000000;i++)
		num-=1;
	return NULL;
}
